package com.slofzx.nuoda.evaluation.project.controller;

import com.slofzx.nuoda.common.config.Type;
import com.slofzx.nuoda.common.vo.TypeVO;
import com.slofzx.nuoda.custom.template.dto.TemplateInfoDTO;
import com.slofzx.nuoda.custom.template.vo.TemplateInfoVO;
import com.slofzx.nuoda.evaluation.project.dto.ExportTemplateDetailDTO;
import com.slofzx.nuoda.evaluation.project.dto.ExportTemplateInfoDTO;
import com.slofzx.nuoda.evaluation.project.vo.ExportTemplateInfoVO;
import com.slofzx.nuoda.evaluation.project.service.ExportTemplateInfoService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import com.slofzx.nuoda.common.controller.BaseController;
import com.slofzx.nuoda.common.vo.AjaxResultVO;
import com.slofzx.nuoda.common.vo.PageResultVO;
import com.slofzx.nuoda.common.enums.ServiceResult;

import java.util.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * 模版信息表控制层
 *
 * @author nuoda
 * @menu 模版信息表
 * @since 2024-02-21 10:03:01
 */
@RestController
@RequestMapping("/template")
public class ExportTemplateInfoController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private ExportTemplateInfoService exportTemplateInfoService;

    /**
     * 通过查询条件查询列表数据
     *
     * @param dto 查询参数
     * @return 列表数据
     */
    @GetMapping("/data")
    public AjaxResultVO<List<ExportTemplateInfoVO>> queryList(ExportTemplateInfoDTO dto) {
        List<ExportTemplateInfoVO> dataList = exportTemplateInfoService.queryList(dto);
        return AjaxResultVO.newSuccessResult(dataList);
    }
    /**
     * 创建数据
     *
     * @param dto 参数数据
     * @return 操作结果
     */
    @ResponseBody
    @PostMapping(value = "/cancelPublish")
    public AjaxResultVO cancelPublish(@RequestBody ExportTemplateDetailDTO dto) {
        ServiceResult resultEnum = exportTemplateInfoService.cancelPublish(dto);
        return AjaxResultVO.getInstance(resultEnum);
    }
    /**
     * 通过查询条件查询列表数据
     *
     * @param dto 查询参数
     * @return 列表数据
     */
    @GetMapping("/field/data")
    public AjaxResultVO<List<Type>> fieldList(ExportTemplateInfoDTO dto) {
        List<Type> dataList = exportTemplateInfoService.queryFieldList(dto);
        return AjaxResultVO.newSuccessResult(dataList);
    }

    @RequiresPermissions({"template:create"})
    @ResponseBody
    @RequestMapping({"/created"})
    public AjaxResultVO create(@RequestBody ExportTemplateInfoDTO dto, HttpServletRequest request) {
        ServiceResult resultEnum = this.exportTemplateInfoService.createTemplate(dto);
        AjaxResultVO resultVO = AjaxResultVO.getInstance(resultEnum);
        return resultVO;
    }

}
